///
/// ArmyBodger 3
/// (c)2010 richyp
///
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Text;

namespace ArmyBodger.Core {
    /// <summary>
    /// Represents a Game System supported by Army Bodger
    /// </summary>
    public class GameSystem : DynamicObject {
        /// <summary>
        /// Default Constructor
        /// </summary>
        public GameSystem() {
            this.Header = new Header();
            this.Globals = new EquipmentCollection();
            this.Path = "";
        }
        /// <summary>
        /// Name of the Game System (From the header object)
        /// </summary>
        public string Name {
            get {
                return this.Header.Name;
            }
            set {
                this.Header.Name = value;
            }
        }
        /// <summary>
        /// CSV list of Authors of the Game System
        /// </summary>
        public string Authors {
            get {
                return this.Header.Authors;
            }
            set {
                this.Header.Authors = value;
            }
        }
        /// <summary>
        /// The path to this Game System
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// Visual representation of this Game System
        /// </summary>
        public Image Icon { get; set; }
        /// <summary>
        /// Header object that can contain non-predefined properties
        /// </summary>
        public dynamic Header { get; protected set; }
        /// <summary>
        /// A Collection of Globally provided equipment such as Game System
        /// based weapons, e.g. Halberds, Shields etc...
        /// </summary>
        public EquipmentCollection Globals { get; protected set; }
        /// <summary>
        /// Overriden ToString() method
        /// </summary>
        /// <returns>The name of this Game System</returns>
        public override string ToString() {
            return this.Name;
        }
    }
    
}
